#!/usr/bin/env python
# -*- coding:utf-8 -*-


'''
@Author : shouke
'''

class ActionDecorator(object):
    '''
    action 装饰器

    '''

    ACTION_FUNC_CLASS_MODULE_MAP = {} # 存放action和action动作函数,函数所属类，所属模块路径的映射关系


    @classmethod
    def action_register(cls, action, class_name, function_name, module_path):
        '''
        :param action 动作
        :param class_name action_func 所属类
        :param function_name 动作处理函数，此处要求function_name必须使用@classmethod修饰，且改函数内部通过self.function方式引用的类函数也必须使用@classmethod修饰
        :param module_path 以class_name命名的类所属路径 （点分形式， 形式 components.assertioners.response_assertioner）
        '''

        def wrapper(func):
            cls.ACTION_FUNC_CLASS_MODULE_MAP.update({action: {'class_name':class_name, 'function_name':function_name, 'module_path':module_path}})
            return func
        return wrapper